package com.adv.io;

import java.io.*;
import java.util.*;

/**
 * 7：常用图片的格式可以通过读取文件头部分获得：常用图片的格式可以通过读取文件头部分获得(16进制)： （1）JPEG - 文件头标识 (2 bytes):
 * 0xff, 0xd8 (SOI) (JPEG 文件标识) （3）PNG - 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A
 * （4）GIF - 文件头标识 (6 bytes) 47 49 46 38 39(37) 61 （5）BMP - 文件头标识 (2 bytes) 42
 * 4D，字符即： B M 输入一个文件名，判断其真正格式和其文件类型是否匹配（防止直接给文件改名，比如把一个jpg改成bmp或者把一个rar改成jpg）
 * 
 * @author zhaoyang
 *
 */
public class IO_Work07 {

	public static void main(String[] args) throws IOException {
//		Scanner input=new Scanner(System.in);
//		System.out.println("请输入文件目录和文件名：");
//		String str=input.next();
//		FileInputStream fi=new FileInputStream(str);
		FileInputStream fi = new FileInputStream(new File("/Users/zhaoyang/Desktop/求数.png"));
		ByteArrayOutputStream bo = new ByteArrayOutputStream(1000);
		byte[] b = new byte[2];
		int n;
		while ((n = fi.read(b)) != -1) {
			bo.write(b, 0, n);
		}
		fi.close();
		bo.close();
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < b.length; i++) {
			int v = b[i] & 0xFF;
			String hv = Integer.toHexString(v);
			if (hv.length() < 2) {
				sb.append(0);
			}
			sb.append(hv);
		}
		String str = sb.toString().toUpperCase();
		System.out.println(str);
		if (str.equals("0xff0xd8")) {
			System.out.println("这个文件是：JPEG！");
		} else if (str.equals("8950")) {
			System.out.println("这个文件是：PNG！");
		} else if (str.equals("4749")) {
			System.out.println("这个文件是：GIF！");
		} else if (str.equals("424D")) {
			System.out.println("这个文件是：BMP！");
		} else {
			System.out.println("没找到该文件类型！");
		}

	}

}
